home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / hardware / ahd12 / ahd / mydev.i < prev   
Text File  |  2000-02-28  |  5KB  |  108 lines

  1. *INTRRUPT       SET     1       ; Remove "*" to enable fake interrupt code
  2.  
  3. ; stack size and priority for the process we will create
  4. MYPROCSTACKSIZE EQU     $800
  5. MYPROCPRI       EQU     0
  6.  
  7. SECTOR          EQU     512     ; # bytes per sector
  8. SECSHIFT        EQU     9       ; Shift count to convert byte # to sector #
  9. RAMSIZE         EQU     512*200 ; Use this much RAM per unit
  10. IAMPULLING      EQU     7       ; "I am pulling the interrupt" bit of INTCRL1
  11. INTENABLE       EQU     4       ; "Interrupt Enable" bit of INTCRL2
  12. INTCTRL1        EQU     $40     ; Interrupt control register offset on board
  13. INTCTRL2        EQU     $42     ; Interrupt control register offset on board
  14. INTACK          EQU     $50     ; My board's interrupt reset address
  15. ;-----------------------------------------------------------------------
  16. ;
  17. ; device command definitions
  18. ;
  19. ;-----------------------------------------------------------------------
  20.  
  21.         DEVINIT
  22.         DEVCMD  CMD_MOTOR       ; control the disk's motor (NO-OP)
  23.         DEVCMD  CMD_SEEK        ; explicit seek (NO-OP)
  24.         DEVCMD  CMD_FORMAT      ; format disk - equated to WRITE for RAMDISK
  25.         DEVCMD  CMD_REMOVE      ; notify when disk changes (NO-OP)
  26.         DEVCMD  CMD_CHANGENUM   ; number of disk changes (always 0)
  27.         DEVCMD  CMD_CHANGESTATE ; is there a disk in the drive? (always TRUE)
  28.         DEVCMD  CMD_PROTSTATUS  ; is the disk write protected? (always FALSE)
  29.         DEVCMD  CMD_RAWREAD     ; Not supported
  30.         DEVCMD  CMD_RAWWRITE    ; Not supported
  31.         DEVCMD  CMD_GETDRIVETYPE; Get drive type
  32.         DEVCMD  CMD_GETNUMTRACKS; Get number of tracks
  33.         DEVCMD  CMD_ADDCHANGEINT; Add disk change interrupt (NO-OP)
  34.         DEVCMD  CMD_REMCHANGEINT; Remove disk change interrupt ( NO-OP)
  35.         DEVCMD  CMD_READCONFIG  ; Read Config from buffer
  36.         DEVCMD  MYDEV_END       ; place marker -- first illegal command #
  37.  
  38. ;-----------------------------------------------------------------------
  39. ;
  40. ; Layout of parameter packet for MakeDosNode
  41. ;
  42. ;-----------------------------------------------------------------------
  43.  
  44.     STRUCTURE MkDosNodePkt,0
  45.         APTR    mdn_dosName     ; Pointer to DOS file handler name
  46.         APTR    mdn_execName    ; Pointer to device driver name
  47.         ULONG   mdn_unit        ; Unit number
  48.         ULONG   mdn_flags       ; OpenDevice flags
  49.         ULONG   mdn_tableSize   ; Environment size
  50.         ULONG   mdn_sizeBlock   ; # longwords in a block
  51.         ULONG   mdn_secOrg      ; sector origin -- unused
  52.         ULONG   mdn_numHeads    ; number of surfaces
  53.         ULONG   mdn_secsPerBlk  ; secs per logical block -- unused
  54.         ULONG   mdn_blkTrack    ; secs per track
  55.         ULONG   mdn_resBlks     ; reserved blocks -- MUST be at least 1!
  56.         ULONG   mdn_prefac      ; unused
  57.         ULONG   mdn_interleave  ; interleave
  58.         ULONG   mdn_lowCyl      ; lower cylinder
  59.         ULONG   mdn_upperCyl    ; upper cylinder
  60.         ULONG   mdn_numBuffers  ; number of buffers
  61.         ULONG   mdn_memBufType  ; Type of memory for AmigaDOS buffers
  62.         STRUCT  mdn_dName,5     ; DOS file handler name "RAM0"
  63.         LABEL   mdn_Sizeof      ; Size of this structure
  64.  
  65. ;-----------------------------------------------------------------------
  66. ;
  67. ; device data structures
  68. ;
  69. ;-----------------------------------------------------------------------
  70.  
  71. ; maximum number of units in this device
  72. MD_NUMUNITS     EQU     2
  73.  
  74.     STRUCTURE MyDev,LIB_SIZE
  75.         ULONG   md_SysLib
  76.         ULONG   md_SegList
  77.         ULONG   md_CAddr
  78.         ULONG   md_Process
  79.         UBYTE   md_Flags
  80.         UBYTE   md_pad
  81.         STRUCT  md_Units,MD_NUMUNITS*4
  82.         STRUCT  md_Base,CurrentBinding_SIZEOF;         Base address of this device's expansion board
  83.         LABEL   MyDev_Sizeof
  84.  
  85.     STRUCTURE MyDevMsg,MN_SIZE
  86.         APTR    mdm_Device
  87.         APTR    mdm_Unit
  88.         LABEL   MyDevMsg_Sizeof
  89.  
  90.     STRUCTURE MyDevUnit,UNIT_SIZE
  91.         APTR    mdu_Device
  92.         ULONG   mdu_SigMask             ; Signal these bits on interrupt
  93.         UBYTE   mdu_UnitNum
  94.         UBYTE   mdu_SigBit              ; Signal bit allocated for interrupts
  95.         UBYTE   mdu_UnitMask            ; Mask for drive no.
  96.         LABEL   MyDevUnit_Sizeof
  97.  
  98.         ;------ state bit for unit stopped
  99.         BITDEF  MDU,STOPPED,2
  100.  
  101.    STRUCTURE MyProc,UNIT_SIZE
  102.       STRUCT   mp_stack,MYPROCSTACKSIZE
  103.       STRUCT   mp_is,IS_SIZE          ; Interrupt structure
  104.       STRUCT   mp_tcb,TC_SIZE         ; TCB for disk task
  105.       STRUCT   mp_Msg,MyDevMsg_Sizeof
  106.       LABEL    MyProc_Sizeof
  107.  
  108.